
// Boost Includes ==============================================================
#include <boost/python.hpp>
#include <boost/cstdint.hpp>

// Includes ====================================================================
#include <OpenSG/OSGSimpleTexturedMaterial.h>
#include <OpenSG/OSGSimpleTexturedMaterialBase.h>
#include <OsgPtrHelpers.h>

// Using =======================================================================
using namespace boost::python;

// Declarations ================================================================
namespace  {

BOOST_PYTHON_MEMBER_FUNCTION_OVERLOADS(osg_SimpleTexturedMaterial_dump_overloads_0_2, dump, 0, 2)


}// namespace


// Module ======================================================================
void Export_src_pyste_gen_SimpleTexturedMaterial()
{
    scope* osg_SimpleTexturedMaterialBase_scope = new scope(
    class_< osg::SimpleTexturedMaterialBase, bases< osg::SimpleMaterial > , boost::noncopyable >("SimpleTexturedMaterialBase", no_init)
//        .def_readonly("ImageFieldMask", &osg::SimpleTexturedMaterialBase::ImageFieldMask)
//        .def_readonly("MinFilterFieldMask", &osg::SimpleTexturedMaterialBase::MinFilterFieldMask)
//        .def_readonly("MagFilterFieldMask", &osg::SimpleTexturedMaterialBase::MagFilterFieldMask)
//        .def_readonly("EnvModeFieldMask", &osg::SimpleTexturedMaterialBase::EnvModeFieldMask)
//        .def_readonly("EnvMapFieldMask", &osg::SimpleTexturedMaterialBase::EnvMapFieldMask)
//        .def_readonly("MTInfluenceMask", &osg::SimpleTexturedMaterialBase::MTInfluenceMask)
        .def("getClassType", &osg::SimpleTexturedMaterialBase::getClassType, return_internal_reference< 1 >())
        .def("getClassTypeId", &osg::SimpleTexturedMaterialBase::getClassTypeId)
        .def("getType", (osg::FieldContainerType& (osg::SimpleTexturedMaterialBase::*)() )&osg::SimpleTexturedMaterialBase::getType, return_internal_reference< 1 >())
        .def("getType", (const osg::FieldContainerType& (osg::SimpleTexturedMaterialBase::*)() const)&osg::SimpleTexturedMaterialBase::getType, return_internal_reference< 1 >())
        .def("getContainerSize", &osg::SimpleTexturedMaterialBase::getContainerSize)
        //.def("getImage", (osg::ImagePtr& (osg::SimpleTexturedMaterialBase::*)() )&osg::SimpleTexturedMaterialBase::getImage, return_value_policy< copy_const_reference >())
        .def("getImage", (const osg::ImagePtr& (osg::SimpleTexturedMaterialBase::*)() const)&osg::SimpleTexturedMaterialBase::getImage, return_value_policy< copy_const_reference >())
        //.def("getMinFilter", (GLenum& (osg::SimpleTexturedMaterialBase::*)() )&osg::SimpleTexturedMaterialBase::getMinFilter, return_value_policy< copy_const_reference >())
        .def("getMinFilter", (const GLenum& (osg::SimpleTexturedMaterialBase::*)() const)&osg::SimpleTexturedMaterialBase::getMinFilter, return_value_policy< copy_const_reference >())
        //.def("getMagFilter", (GLenum& (osg::SimpleTexturedMaterialBase::*)() )&osg::SimpleTexturedMaterialBase::getMagFilter, return_value_policy< copy_const_reference >())
        .def("getMagFilter", (const GLenum& (osg::SimpleTexturedMaterialBase::*)() const)&osg::SimpleTexturedMaterialBase::getMagFilter, return_value_policy< copy_const_reference >())
        //.def("getEnvMode", (GLenum& (osg::SimpleTexturedMaterialBase::*)() )&osg::SimpleTexturedMaterialBase::getEnvMode, return_value_policy< copy_const_reference >())
        .def("getEnvMode", (const GLenum& (osg::SimpleTexturedMaterialBase::*)() const)&osg::SimpleTexturedMaterialBase::getEnvMode, return_value_policy< copy_const_reference >())
        //.def("getEnvMap", (bool& (osg::SimpleTexturedMaterialBase::*)() )&osg::SimpleTexturedMaterialBase::getEnvMap, return_value_policy< copy_const_reference >())
        .def("getEnvMap", (const bool& (osg::SimpleTexturedMaterialBase::*)() const)&osg::SimpleTexturedMaterialBase::getEnvMap, return_value_policy< copy_const_reference >())
        .def("setImage", &osg::SimpleTexturedMaterialBase::setImage)
        .def("setMinFilter", &osg::SimpleTexturedMaterialBase::setMinFilter)
        .def("setMagFilter", &osg::SimpleTexturedMaterialBase::setMagFilter)
        .def("setEnvMode", &osg::SimpleTexturedMaterialBase::setEnvMode)
        .def("setEnvMap", &osg::SimpleTexturedMaterialBase::setEnvMap)
        .def("getBinSize", &osg::SimpleTexturedMaterialBase::getBinSize)
        .def("copyToBin", &osg::SimpleTexturedMaterialBase::copyToBin)
        .def("copyFromBin", &osg::SimpleTexturedMaterialBase::copyFromBin)
        .def("create", &osg::SimpleTexturedMaterialBase::create)
        .def("createEmpty", &osg::SimpleTexturedMaterialBase::createEmpty)
        .def("shallowCopy", &osg::SimpleTexturedMaterialBase::shallowCopy)
        .staticmethod("getClassType")
        .staticmethod("create")
        .staticmethod("createEmpty")
        .staticmethod("getClassTypeId")
    );

    scope().attr("NextFieldId") = (int)osg::SimpleTexturedMaterialBase::NextFieldId;
    scope().attr("MagFilterFieldId") = (int)osg::SimpleTexturedMaterialBase::MagFilterFieldId;
    scope().attr("MinFilterFieldId") = (int)osg::SimpleTexturedMaterialBase::MinFilterFieldId;
    scope().attr("EnvModeFieldId") = (int)osg::SimpleTexturedMaterialBase::EnvModeFieldId;
    scope().attr("EnvMapFieldId") = (int)osg::SimpleTexturedMaterialBase::EnvMapFieldId;
    scope().attr("ImageFieldId") = (int)osg::SimpleTexturedMaterialBase::ImageFieldId;

    delete osg_SimpleTexturedMaterialBase_scope;

    class_< osg::SimpleTexturedMaterial, bases< osg::SimpleTexturedMaterialBase > , boost::noncopyable, osg::SimpleTexturedMaterialRefPtr >("SimpleTexturedMaterial", no_init)
        .def("changed", &osg::SimpleTexturedMaterial::changed)
        .def("dump", &osg::SimpleTexturedMaterial::dump, osg_SimpleTexturedMaterial_dump_overloads_0_2())
        .def("makeState", &osg::SimpleTexturedMaterial::makeState)
        .def("rebuildState", &osg::SimpleTexturedMaterial::rebuildState)
        .def("isTransparent", &osg::SimpleTexturedMaterial::isTransparent)
        .def("imageChanged", &osg::SimpleTexturedMaterial::imageChanged)
    ;


    register_ptr_to_python<osg::SimpleTexturedMaterialPtr>();
    implicitly_convertible<osg::SimpleTexturedMaterialRefPtr, osg::SimpleTexturedMaterialPtr>();
    implicitly_convertible<osg::SimpleTexturedMaterialPtr, osg::SimpleMaterialPtr>();

    def("RefPtr", &pyopensg::ToRefPtr<osg::SimpleTexturedMaterialPtr>);
    def("FCPtr", &pyopensg::ToFcPtr<osg::SimpleTexturedMaterialPtr>);
}

